package com.poc.train.pr;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.bstek.dorado.annotation.DataProvider;
import com.bstek.dorado.annotation.DataResolver;
import com.bstek.dorado.annotation.Expose;
import com.bstek.dorado.data.provider.Page;
import com.poc.train.entity.PocUser;
import com.poc.train.service.PocUserService;

/**
 * 业务控制层
 * 
 * @author Andy
 *
 */
@Component(PocUserPR.BEAN_ID)
public class PocUserPR {

	public static final String BEAN_ID = "poc.userPR";

	@Autowired
	private PocUserService userService;

	/**
	 * ˵���� 1����ǰ����ͨ�����@DataProviderע��ʵ��D7ҳ�����ݵĻ�ȡ��
	 * 2����ǰ����������public�� 3��ҳ���ȡ����Դ��Ϣͨ��SpringBeanId#MethodNameʵ�֣�
	 * ���磺poc.userPR#getUser
	 * 
	 * @return �û��б�
	 */
	@DataProvider
	public List<PocUser> getUser() {
		List<PocUser> list = new ArrayList<PocUser>();
		PocUser user = null;
		for (int i = 0; i < 20; i++) {
			user = new PocUser();
			user.setUserId("USERID" + i);
			list.add(user);
		}

		// insertTestData();

		return list;
	}
	
	
	/**
	 * poc.userPR#listByPosition
	 * 根据岗位获取用户信息
	 * @return
	 */
	@DataProvider
	public List<PocUser> listByPosition(String positionId) {
		return userService.listByPosition(positionId);
	}
	
	
	/**
	 * poc.userPR#listByDdept
	 * 根据部门获取用户信息
	 * @return
	 */
	@DataProvider
	public List<PocUser> listByDdept(String deptId) {
		System.out.println("-----"+deptId);
		return userService.listByDdept(deptId);
	}

	/**
	 * poc.userPR#pageUser ��ҳ��ѯ����
	 * 
	 * @param page
	 * @throws Exception
	 */
	@DataProvider
	public void pageUser(Page<PocUser> page) throws Exception {

		userService.pageUser(page, null);
	}

	/**
	 * poc.userPR#pageUser
	 * 分页+参数获取用户信息
	 * 1、分页获取需要使用Dorado7的Page对象。
	 * 2、参数使用Map来接收。
	 * 
	 * @return
	 * @throws Exception
	 */
	@DataProvider
	public void pageUser2(Page<PocUser> page, Map<String, Object> parameter)
			throws Exception {

		userService.pageUser(page, parameter);
	}

	/**
	 * poc.userPR#saveData 
	 * 
	 * @param datas
	 * @throws Exception
	 */
	@DataResolver
	public void saveData(Collection<PocUser> datas) throws Exception {
		if (null == datas || datas.isEmpty()) {
			return;
		}

		userService.saveData(datas);
	}

	/**
	 * poc.userPR#delUser 
	 * 
	 * 说明：
	 * 1、针对Ajax的请求注解使用 @Expose
	 * 2、本方法接收一个用户ID主键来删除
	 * 
	 * @param 异常信息
	 * @return
	 */
	@Expose
	public String delUser(String userId) {
		if (StringUtils.isEmpty(userId)) {
			return "没有获取到需要删除的用户信息！";
		}
		return userService.delData(userId);
	}
	
	
	
	
	

	private void insertTestData() {
		PocUser user = null;
		for (int i = 0; i < 100; i++) {
			user = new PocUser();
			user.setAge(25);
			user.setBirthday(new Date());
			user.setLocation("�й�-�Ϻ�");
			user.setUserId("USER_ID" + i);
			user.setUserName("USERNAME_" + i);

			userService.addData(user);
		}
	}

}
